版本-v1128
发版说明:api更新时,在这个文档末尾加上release
版本-v1204
发版说明:
1、废弃client.initInnerCallBack中的videoCloseCB回调,将其精确通知到对应的回调事件中(增加closeVideoSuccess回调事件),涉及到的更改如下,示例代码已添加
- client.videoPickUp
- client.videoInviteAgent
- client.callbackToVisitor
- client.videoInviteCurrentVisitor
- client.videoInviteVisitor
2、统一SDK报错的提示格式,从返回的数据的error.msg拿错误提示信息
error: function(data) {
if(data.error) {
var msg = data.error.msg || ''
}
console.log(msg, '错误信息')
}
版本-v1211
发版说明:
1、增加是否在屏幕共享的API - isShareState
2、增加是否在三方视频中的API - isMultipleVideo
版本-v1216
发版说明:
1、client.initInnerCallBack 中添加了 visitorStreamOffline 事件,当会议中有成员视频流停止超过3s 则推送此事件
版本-v1220
发版说明:
1、增加client.videoPickUp中的visitorDisconnect回调,提示音视频接通后访客端引起的挂断,详见示例代码
2、增加client.multipleVideoPickUp中的kefuCloseVideoSuccess回调,提示音视频接通后坐席或访客端挂断导致的会议结束(非被邀请的三方坐席)
1、初始化举例、参数及挂载回调说明
1.1、new IMClient 初始化说明
- baseWsUrl 必填 基础连接的ws,wss://lccp-ex.easemob.com:1040为wss连接,ws://127.0.0.1:1040为ws连接
- ssoTo 必填 客服的主地址
- videoBarVisible 是否开启客服内部的音视频控制条
- success 初始化成功的回调
- error 初始化出错的回调
- ssoReady 单点登录页面准备就绪
- kefuReady 进入客服页面了
- kefuWSClose 客服内部的ws通道出错
1.2、client.initInnerCallBack方法说明
- chatCloseCB ==客服内部IM会话关闭的回调通知==
- videoCloseCB ==客服内部音视频关闭的回调通知==
- visitorStreamOffline ==会议成员视频流离线超过3s==
1.3 初始化示例
window.onload = function() {
var client;
function initIMClient(){
var HXPlugin = window.HXPlugin = 0;
var wssrc = location.protocol == "https:" ? "wss://lccp-ex.easemob.com:1040" : "ws://127.0.0.1:1040";
client = new IMClient({
baseWsUrl: wssrc,
videoBarVisible: true,
ssoTo: "https://kefu.wecvideotest.pingan.com.cn/mo/agent/webapp/chat",
success: function(data){
console.log("成功连接", data);
HXPlugin = 0;
this.linkStatus = true;
},
error: function(error){
this.linkStatus = false;
this.ready = false;
console.log(error);
HXPlugin = 0;
},
ssoReady: function(){
console.log("进入单点登录页面了,可以登录了 123+");
},
kefuReady: function(){
console.log("进入客服系统了,可以退出了 123-");
},
kefuWSClose: function(){
console.log("kefu系统的ws断开");
}
});
client.linkStatus = false;
client.ready = false;
client.detactExeReadyInterval = null;
/**
* 接收exe内部操作的回调
*/
client.initInnerCallBack({
chatCloseCB: function(data){
console.log(data);
},
visitorStreamOffline: function(data){
console.log(data)
}
});
return client;
}
window.initIMClient = initIMClient;
}
2、具体API说明
2.1、 exe窗口相关
client.startLogin 插件登录
- minimize 是否在登录的时候最小化窗口
- data 传入登录的参数 url必传
- success 登录成功的回调通知
- error 登录失败的回调通知
client.startLogin({
minimize: true,
data: {
url: "https://pingan-test-video.easemob.com/doLogin?name=23160006&pwd=76160006&returnTo=",
},
success: function (data) {
console.log(data, "登录成功回调");
},
error: function (err) {
// 登录超时逻辑处理
if (err && err.code == -1) {
// 此时登录超时
console.log("登录超时")
}
}
})
setWindowSize 调整exe窗口宽高
- width 宽度
- height 高度
client.setWindowSize({
width: "300",
height: "400"
});
minimize exe窗口最小化
client.minimize()
startup windows环境下拉起exe插件
client.startup({ clientUrl: "pocprotocol://" })
restore exe窗口还原
client.restore()
quit exe窗口退出
client.quit()
2.2、IM文本会话相关方法
pickUpSession 接起IM会话
- session_id 会话id,必填
- success IM接起成功
- error IM接起失败
client.pickUpSession({
session_id: serviceSessionId,
success: function (data) {
console.log("IM接起成功!", data);
},
error: function (data) {
console.log("IM接起失败!", data);
}
});
chatClose 挂断当前IM会话
client.chatClose()
2.3、 音视频相关方法
videoPickUp 主坐席接起音视频
- session_id 必填 会话id
- success 音视频接起会议创建成功的回调
- visitorDisconnect 音视频接通后访客端引起的挂断
- timeoutDisconnect 超时未接的回调
- error 音视频接起失败的回调
client.videoPickUp({
session_id: serviceSessionId,
success: function (data) {
console.log('video接起成功', data);
},
timeoutDisconnect: function(data) {
console.log('访客超时未接听', data)
},
visitorDisconnect: function(data) {
console.log('音视频接通后访客端引起的挂断', data)
},
kefuCloseVideoSuccess: function(data) {
console.log('客服挂断音视频', data)
},
error: function(error) {
console.log(error, 'videoPickUp err')
}
});
multipleVideoPickUp ==被邀请==的三方坐席接起音视频
- acceptSuccess 三方坐席接受当前视频成功
- exitSuccess 三方坐席离开当前视频成功
- error 三方坐席加入音视频出错
client.multipleVideoPickUp({
acceptSuccess: function (data) {
console.log('三方坐席接受当前视频成功', data);
},
exitSuccess: function (data) {
console.log('三方坐席离开当前视频成功', data);
},
kefuCloseVideoSuccess: function(data) {
console.log('客服挂断音视频', data)
},
error: function(error) {
console.log('三方坐席加入音视频出错', error)
}
});
videoInviteAgent 邀请三方坐席
- agentName 必填 被邀请的三方坐席的name
- inviteSuccess 三方坐席视频邀请发送成功
- acceptSuccess 三方坐席接受视频成功
- exitSuccess 三方坐席退出成功
- error 邀请三方坐席失败
client.videoInviteAgent({
agentName: 'XXXX',
inviteSuccess: function (data) {
console.log('三方坐席视频邀请发送成功', data);
},
acceptSuccess: function (data) {
console.log('三方坐席接受视频成功', data)
},
exitSuccess: function (data) {
console.log('三方坐席退出成功', data)
},
kefuCloseVideoSuccess: function(data) {
console.log('客服挂断音视频', data)
},
error: function(data) {
console.log(data, '邀请坐席失败')
}
})
callbackToVisitor 外呼访客
- visitorName 必填 访客name
- inviteSuccess 外呼-访客邀请发送成功
- acceptSuccess 外呼-访客接受邀请
- visitorRefuse 外呼-访客拒接邀请
- visitorDisconnect 外呼-访客挂断
- videoBusyMark 外呼-访客忙线
- timeoutDisconnect 外呼-访客超时未接听
- kefuCloseVideoSuccess 外呼-客服挂断音视频
- error 外呼-访客 出错,错误信息
client.callbackToVisitor({
visitorName: 'XXXX',
startVideo: true,
inviteSuccess: function (data) {
console.log(data, '外呼-访客邀请发送成功')
},
acceptSuccess: function (data) {
console.log('外呼-访客接受邀请', data)
},
visitorRefuse: function (data) {
console.log('外呼-访客拒接邀请', data)
},
visitorDisconnect: function (data) {
console.log('外呼-访客挂断', data)
},
videoBusyMark: function (data) {
console.log('外呼-访客忙线', data)
},
timeoutDisconnect: function (data) {
console.log('外呼-访客超时未接听', data)
},
kefuCloseVideoSuccess: function(data) {
console.log('客服挂断音视频', data)
},
error: function (error) {
console.log('外呼-访客 出错', error)
/*error: {
code: "SDK_11",
msg: "当前访客正在进行会话,无法外呼"
}
error: {
code: "SDK_08",
msg: "查询id出错,请检查访客信息是否正确"
}*/
}
});
videoInviteCurrentVisitor 邀请当前访客音视频
回调同外呼访客,参上
client.videoInviteCurrentVisitor({
inviteSuccess: function (data) {
console.log(data, '邀请当前-访客邀请发送成功')
},
acceptSuccess: function (data) {
console.log('邀请当前-访客接受邀请', data)
},
visitorRefuse: function (data) {
console.log('邀请当前-访客拒接邀请', data)
},
visitorDisconnect: function (data) {
console.log('邀请当前-访客挂断', data)
},
videoBusyMark: function (data) {
console.log('邀请当前-访客忙线', data)
},
timeoutDisconnect: function (data) {
console.log('邀请当前-访客超时未接听', data)
},
kefuCloseVideoSuccess: function(data) {
console.log('客服挂断音视频', data)
},
error: function (data) {
console.log('邀请当前-访客 出错', data)
}
});
videoInviteVisitor 邀请三方访客
回调同外呼访客,参上
client.videoInviteVisitor({
visitorName: 'XXXX',
inviteSuccess: function (data) {
console.log(data, '邀请三方-访客邀请发送成功')
},
acceptSuccess: function (data) {
console.log('邀请三方-访客接受邀请', data)
},
visitorRefuse: function (data) {
console.log('邀请三方-访客拒接邀请', data)
},
visitorDisconnect: function (data) {
console.log('邀请三方-访客挂断', data)
},
videoBusyMark: function (data) {
console.log('邀请三方-访客忙线', data)
},
timeoutDisconnect: function (data) {
console.log('邀请三方-访客超时未接听', data)
},
kefuCloseVideoSuccess: function(data) {
console.log('客服挂断音视频', data)
},
error: function (data) {
console.log('邀请三方-访客 出错', data)
/*error: {
code: "SDK_11",
msg: "当前访客正在进行会话,无法外呼"
}
error: {
code: "SDK_08",
msg: "查询id出错,请检查访客信息是否正确"
}*/
}});
videoDisconnect 挂断音视频
client.videoDisconnect()
2.4、截图&拍照
// 拍照
client.takePhoto({
success: function (data) {
console.log(data, '拍照数据')
},
error: function(error) {
console.log(error, '拍照失败')
// 拍照不可用会返回如下消息 {"mark":"takePhoto","subMark":"error","error":{"type":"snapShotDisabled","msg":"snapShotDisabled"}}
}
});
// 截图
client.snapshot({
success: function (data) {
console.log(data, '截图数据')
},
error: function(error) {
console.log(error, '截图失败')
}
});
2.5、 共享
inviteShare 邀请访客共享
- open 访客共享屏幕打开了
- close 访客共享屏幕关闭了
- error 邀请访客共享屏幕失败
client.inviteShare({
open: function (data) {
console.log('共享屏幕邀请成功', data)
},
close: function (data) {
console.log('访客共享屏幕关闭了', data)
},
error: function (error) {
console.log('邀请访客共享屏幕失败')
}
});
2.6、 其他
sessionCount 获取当前正在进行的会话的数量
client.sessionCount({
success: function(data) {
console.log(data.payload.sessionCount)
}
})
sessionState 获取当前正在进行的会话的详情
client.sessionState({
success: function(data) {
console.log(data)
}
})
isMultipleVideo
参数说明
- success中的data.data为布尔值,true代表当前正在三方视频中,false代表当前不在三方视频中
client.isMultipleVideo({
success: function(data) {
console.log(data.data, '当前是否正在三方视频中')
}
})
isShareState
参数说明
- success中的data.data为布尔值,true代表当前正在共享中,false代表当前不在共享中
client.isShareState({
success: function(data) {
console.log(data.data, '当前是否在共享中')
}
})
release说明
- api的md文档提供 - 11.28
版本-v190307
发版说明:
1、整合brower端和app端sdk,采用状态机管理应用工作状态,
2、修改部分api的调用方式
状态机
const state = {
currentState: '000000',
//未迁入
notLogin: '000000',
//忙
visitorInvite_timeout: '001001',
agentInvite_timeout: '001002',
//闲
callVisitor_visitorRefuse:'002001',
callVisitor_Timeout:'002002',
callVisitor_busy:'002003',
callVisitor_error:'002004',
callVisitor_agentCloseVideo_notAnswer:'002005',
callCurrentVisitor_visitorRefuse:'002006',
callCurrentVisitor_timeout:'002007',
callCurrentVisitor_busy:'002008',
callCurrentVisitor_error:'002009',
callCurrentVisitor_agentCloseVideo_notAnswer:'002010',
visitorInvite_error: '002011',
agentInvite_error: '002012',
//外呼中
callVisitor_inviteSendSuccess:'003001',
callCurrentVisitor_inviteSendSuccess:'003002',
//来电中
//话后处理
inviteThirdVisitor_masterAgentCloseVideo: '005001',
inviteThirdAgent_masterAgentCloseVideo: '005002',
callVisitor_visitorDisconnect:'005003',
callVisitor_agentCloseVideo_answered:'005004',
callCurrentVisitor_visitorDisconnect:'005005',
callCurrentVisitor_agentCloseVideo_answered:'005006',
visitorInvite_visitorDisconnect: '005007',
visitorInvite_agentCloseVideo: '005008',
agentInvite_visitorDisconnect: '005009',
agentInvite_agentCloseVideo: '0050010',
//两方通话中
inviteThirdVisitor_visitorRefuse:'006001',
inviteThirdVisitor_Timeout:'006002',
inviteThirdVisitor_busy:'006003',
inviteThirdVisitor_error:'006004',
inviteThirdVisitor_visitorDisconnect:'006005',
//inviteThirdAgent_visitorRefuse:'006006',
//inviteThirdAgent_Timeout:'006007',
//inviteThirdAgent_busy:'006008',
inviteThirdAgent_error:'006009',
inviteThirdAgent_visitorDisconnect:'006010',
callVisitor_VisitorAcceptSuccess:'006011',
callCurrentVisitor_VisitorAcceptSuccess:'006012',
visitorInvite_Success: '006013',
agentInvite_Success: '006014',
//邀请中
inviteThirdVisitor_inviteSendSuccess:'007001',
inviteThirdAgent_inviteSendSuccess:'007002',
//三方通话中
inviteThirdVisitor_success:'008001',
inviteThirdAgent_success:'008002',
}
000000未签入
001000忙
001001 访客邀请-超时
001002 坐席邀请-超时
002000闲
002001 外呼访客-访客拒绝
002002 外呼访客-访客超时
002003 外呼访客-访客忙
002004 外呼访客-访客错误
002005 外呼访客-坐席挂断(未接通)
002006 外呼当前访客-访客拒绝
002007 外呼当前访客-访客超时
002008 外呼当前访客-访客忙
002009 外呼当前访客-访客错误
0020010 外呼当前访客-坐席挂断(未接通)
002011 访客邀请-错误
002012 坐席邀请-错误
003000外呼中
003001 外呼访客-邀请发送成功
003002 外呼当前访客-邀请发送成功
004000来电中
005000话后处理
005001 邀请三方访客-主坐席挂断
005002 邀请三方坐席-主坐席挂断
005003 外呼访客-访客挂断
005004 外呼访客-坐席挂断(接通后)
005005 外呼当前访客-访客挂断
005006 外呼当前访客-坐席挂断(接通后)
005007 访客邀请-访客挂断
005008 访客邀请-坐席挂断
005009 坐席邀请-访客挂断
005010 坐席邀请-坐席挂断
006000两方通话中
006001 邀请三方访客-访客拒绝
006002 邀请三方访客-访客忙
006003 邀请三方访客-访客超时
006004 邀请三方访客-访客错误
006005 邀请三方访客-访客挂断
006006 邀请三方坐席-坐席拒绝
006007 邀请三方坐席-坐席忙
006008 邀请三方坐席-坐席超时
006009 邀请三方坐席-坐席错误
006010 邀请三方坐席-坐席挂断
006011 外呼访客-访客接受视频成功
006012 外呼当前访客-访客接受视频成功
006013 访客邀请-成功
006014 坐席邀请-成功
007000邀请中
007001 邀请三方访客-邀请发送成功
007002 邀请三方坐席-邀请发送成功
008000三方通话中
008001 邀请三方访客-访客接受视频成功
008002 邀请三方坐席-坐席接受视频成功
相关api调用修改
1、相关api采用统一调用参数格式
2、参数为回调函数, para1: obj,
para2: func(state, [payload])
videoInviteVisitor 邀请三方访客
client.videoInviteVisitor({
visitorName: 'XXXX',
},function(state, payload){
if (state = 006001){
console.log('邀请三方访客-访客拒接邀请')
} else if (state = 006002){
console.log('邀请三方访客-访客忙线')
} else if (state = 006003){
console.log('邀请三方访客-访客超时')
} else if (state = 006004){
console.log('邀请三方访客-访客错误')
} else if (state = 006005){
console.log('邀请三方访客-访客挂断')
} else if (state = 007001){
console.log('邀请三方访客-邀请发送成功')
} else if (state = 008001){
console.log('邀请三方访客-访客接受视频成功')
} else if (state = 005001){
console.log('邀请三方访客-主坐席挂断')
}
});
videoInviteAgent 邀请三方坐席
client.videoInviteAgent({
agentName: 'XXXX'
},function(state, payload){
if (state = 006006){
console.log('邀请三方访客-访客拒接邀请')
} else if (state = 006007){
console.log('邀请三方访客-访客忙线')
} else if (state = 006008){
console.log('邀请三方访客-访客超时')
} else if (state = 006009){
console.log('邀请三方访客-访客错误')
} else if (state = 0060010){
console.log('邀请三方访客-访客挂断')
} else if (state = 007002){
console.log('邀请三方访客-邀请发送成功')
} else if (state = 008002){
console.log('邀请三方访客-访客接受视频成功')
} else if (state = 005002){
console.log('邀请三方访客-主坐席挂断')
}
});
*注意:原始api只有邀请 错误、发送成功、接收成功、第三方坐席挂断(exitSuccess而非visitorDisconnect)住坐席挂断
callbackToVisitor 外呼访客
- visitorName **必填** 访客name
- inviteSuccess 外呼-访客邀请发送成功
- acceptSuccess 外呼-访客接受邀请
- visitorRefuse 外呼-访客拒接邀请
- visitorDisconnect 外呼-访客挂断
- videoBusyMark 外呼-访客忙线
- timeoutDisconnect 外呼-访客超时未接听
- kefuCloseVideoSuccess 外呼-客服挂断音视频
- error 外呼-访客 出错,错误信息
client.callbackToVisitor({
visitorName: 'XXXX',
startVideo: true,
},function(state, payload){
if (state = 002001){
console.log('外呼访客-访客拒接邀请')
} else if (state = 002002){
console.log('外呼访客-访客超时')
} else if (state = 002003){
console.log('外呼访客-访客忙线')
} else if (state = 002004){
console.log('外呼访客-访客错误')
} else if (state = 002005){
console.log('外呼访客-坐席挂断(未接通)')
} else if (state = 003001){
console.log('外呼访客-邀请发送成功')
} else if (state = 006011){
console.log('外呼访客-访客接受视频成功')
} else if (state = 005003){
console.log('外呼访客-访客挂断')
} else if (state = 005004){
console.log('外呼访客-坐席挂断(已接通)')
}
}
});
videoInviteCurrentVisitor 邀请当前访客音视频
client.videoInviteCurrentVisitor(null, function(state, payload){
if (state = 002006){
console.log('外呼当前访客-访客拒接邀请')
} else if (state = 002007){
console.log('外呼当前访客-访客超时')
} else if (state = 002008){
console.log('外呼当前访客-访客忙线')
} else if (state = 002009){
console.log('外呼当前访客-访客错误')
} else if (state = 0020010){
console.log('外呼当前访客-坐席挂断(未接通)')
} else if (state = 003002){
console.log('外呼当前访客-邀请发送成功')
} else if (state = 006012){
console.log('外呼当前访客-访客接受视频成功')
} else if (state = 005005){
console.log('外呼当前访客-访客挂断')
} else if (state = 005006){
console.log('外呼当前访客-坐席挂断(已接通)')
}
});
videoPickUp 主坐席接起音视频
- session_id 必填 会话id
- success 音视频接起会议创建成功的回调
- visitorDisconnect 音视频接通后访客端引起的挂断
- timeoutDisconnect 超时未接的回调
- error 音视频接起失败的回调
client.videoPickUp({
session_id: serviceSessionId,
}, function(state, payload){
if (state = 001001){
console.log(‘访客邀请-访客超时未接听')
} else if (state = 002011){
console.log('访客邀请-错误')
} else if (state = 006013){
console.log('访客邀请-成功')
} else if (state = 005007){
console.log('访客邀请-访客挂断(接通后)')
} else if (state = 005008){
console.log('访客邀请-坐席挂断(接通后)')
}
});
multipleVideoPickUp ==被邀请==的三方坐席接起音视频
- acceptSuccess 三方坐席接受当前视频成功
- exitSuccess 三方坐席离开当前视频成功
- error 三方坐席加入音视频出错
client.multipleVideoPickUp(null, function(state, payload){
if (state = 001002){
console.log('坐席邀请-访客超时未接听')
} else if (state = 002011){
console.log('坐席邀请-错误')
}else if (state = 006014){
console.log('坐席邀请邀请-成功')
} else if (state = 005009){
console.log('坐席邀请-访客挂断(接通后)')
} else if (state = 005010){
console.log('坐席邀请-坐席挂断(接通后)')
}
});
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。